//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 2008
//
// File: 
//      IWebServicesApiLogger.cs
//
// Contents: 
//      Reputation Web Services Logger interface - data feed for the Data Points Logging
//
// Created by: 
//      Andrew Lin (yunlin@microsoft.com) March 5 2008
//
//----------------------------------------------------------------------------

using System;
using System.Collections.Generic;

namespace Microsoft.Reputation.Services
{
    public interface IWebServicesApiLogger
    {
        void StopLogging();

        void LogLookupObjects(
            ClientIdToken clientId,
            ICollection<LookupRequest> requests,
            Filter filter,
            StateToken requestStateToken,
            ICollection<LookupResponse> responses,
            StateToken responseStateToken,
            long latestOverrideStamp,
            uint delayCommunicationMinutes,
            uint operationStatus,
            string clientIpAddress);

        void LogListRelatedObjects(
            ClientIdToken clientId,
            ICollection<ListingRequest> requests,
            Filter filter,
            StateToken requestStateToken,
            ListingToken requestListingToken,
            ICollection<ListingResponse> responses,
            StateToken responseStateToken,
            ListingToken responseListingToken,
            long latestOverrideStamp,
            uint remaining,
            uint delayCommunicationMinutes,
            uint operationStatus);

        void LogGetOverrides(
            ClientIdToken clientId,
            Filter filter,
            long requestOverrideStamp,
            StateToken requestStateToken,
            ICollection<ReputationObject> responses,
            long responseClientOverrideStamp,
            StateToken responseStateToken,
            long latestOverrideStamp,
            uint remaining,
            uint delayCommunicationMinutes,
            uint operationStatus);

        void LogLookupCategoriesForUrl(
            ClientIdToken clientId,
            string url,
            List<CategoryReputation> categories,
            uint operStatus,
            string clientIpAddress);
    }
}